package com.xiao.live.config;

import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class AliPlayAndPushUtils {
    /**
     * 推流域名 阿里云配置的推流域名
     */
    private static final String pushDomain = "hgtqq.java50k.com";
    /**
     * 拉流域名 阿里云配置的拉流域名
     */
    private static final String pullDomain = "hgt666.java50k.com";
    /**
     * appName
     * 随便取一个app名字：比如说 penggelive
     */
    private static final String appName = "hgt";
    /**
     * 鉴权key: 阿里云创建了推流域名和播流域名过后，他给生成的，每个域名一个，推流用推流的key，
     * 播流用播流的key，我这里只有一个key，因为我自己定义的一个，然后去阿里云里面把他们两个的权鉴备用key都设置成我设置的了
     */
    private static final String key = "0u4u963LL08OAawn";
    /**
     * 根据阿里云模板id,配置拉流显示流畅度
     * 如果没有配置模板，则将UDID 、LDID、SDID、HDID从代码中删除，否则会播流时不成功
     */
//    private static final String UDID = "_ud";//超高清
//    private static final String LDID = "_ld";//流畅
//    private static final String SDID = "_sd";//标清
//    private static final String HDID = "_hd";//高清
    /**
     * @param time 十位数的时间戳
     * @return 推流的地址
     */
    public static String CreatePushUrl(String streamName, long time) {
        String strpush = "/" + appName + "/" + streamName + "-" + time + "-0-0-" + key;
        String pushUrl = "rtmp://" + pushDomain + "/" + appName + "/" + streamName + "?auth_key=" + time + "-0-0-" + MD5Util.getMD5(strpush);
//        System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>推流:   " + pushUrl);
        return pushUrl;
    }
   // http://pushlive.java50k.com/shoplive/zh.m3u8?auth_key=1632505943-0-0-2924474eb3600386f2c2142870372691
    /**
     * @param time 十位数的时间戳
     *             //     * @param rand       这是用来标识的 否则同一个时间戳 生成的地址总是相同的
     *             随机数，建议使用UUID（不能包含中划线“-”，例如： 477b3bbc253f467b8def6711128c7bec 格式）
     * @return 播放流的地址 默认是flv  也可以更改此代码
     */
    public static String GetPlayUrl(String streamName, long time) {
        String strviewrtmp1 = null;
        String strviewflv1 = null;
        String strviewm3u81 = null;

        String rtmpurl1 = null;
        String flvurl1 = null;
        String m3u8url1 = null;

        strviewrtmp1 = "/" + appName + "/" + streamName + "-" + time + "-0-0-" + key;
        strviewflv1 = "/" + appName + "/" + streamName + ".flv-" + time + "-0-0-" + key;
        strviewm3u81 = "/" + appName + "/" + streamName +".m3u8-" + time + "-0-0-" + key;
        rtmpurl1 = "rtmp://" + pullDomain + "/" + appName + "/" + streamName + "?auth_key=" + time + "-0-0-" + MD5Util.getMD5(strviewrtmp1);
        flvurl1 = "http://" + pullDomain + "/" + appName + "/" + streamName  + ".flv?auth_key=" + time + "-0-0-" + MD5Util.getMD5(strviewflv1);
        m3u8url1 = "http://" + pullDomain + "/" + appName + "/" + streamName  +".m3u8?auth_key=" + time + "-0-0-" + MD5Util.getMD5(strviewm3u81);

        Map<String, String> resultMap = new HashMap<>(5);
        resultMap.put("rtm", rtmpurl1);
        resultMap.put("flv", flvurl1);
        resultMap.put("m3u8", m3u8url1);
//        System.out.println(">>>>>>>>>>>>>>>>>>拉流:  " + rtmpurl1);
//        System.out.println(">>>>>>>>>>>>>>>>>>拉流:    " + flvurl1);
//        System.out.println(">>>>>>>>>>>>>>>>>>拉流:    " + m3u8url1);
        return flvurl1;
    }

    public static void main(String[] args) throws Exception {
        Long longTime = DateUtils.longTodate();//有效时间
        String pushUrl = CreatePushUrl("2222", longTime);
        String playUrl = GetPlayUrl("2222", longTime);
        System.out.println("推流地址====" + pushUrl);
        System.out.println("拉流地址====" + playUrl);
    }
    //推流地址
    public String topushUrl(){
        Long longTime = DateUtils.longTodate();//有效时间
        String pushUrl = CreatePushUrl("1111", longTime);
        return pushUrl;
    }
    //拉流地址
    public String toplayUrl(){
        Long longTime = DateUtils.longTodate();//有效时间
        String playUrl = GetPlayUrl("1111", longTime);
        return playUrl;
    }
}
